from Tkinter import *
import tkMessageBox
import pickle
from Aluno import *
from Professor import *
from Funcionario import *
from Livro import *

class programa:

    def Cadastrar_Aluno(self, nome, serie, periodo, turno, email, email_pais, max_emprestimo, autorizacao, matricula):

        self.emprestimo = []
        self.aluno = aluno()
        self.aluno.setNome(nome)
        self.aluno.setSerie(serie)
        self.aluno.setPeriodo(periodo)
        self.aluno.setTurno(turno)
        self.aluno.setEmail(email)
        self.aluno.setEmailPais(email_pais)
        self.aluno.setMaxDeEmprestimo(max_emprestimo)
        self.aluno.setAutorizacao(autorizacao)
        self.aluno.setMatricula(matricula)
        self.aluno.setEmprestimos(self.emprestimo)
        self.aluno.setAtivo(True)

        self.Verificar_Matricula(matricula, self.aluno)

    def Cadastrar_Professor(self, nome, telefone, cpf, materias, email, max_emprestimo, autorizacao):

        self.emprestimo = []
        self.professor = professor()
        self.professor.setNome(nome)
        self.professor.setTelefone(telefone)
        self.professor.setCpf(cpf)
        self.professor.setMaterias(materias)
        self.professor.setEmail(email)
        self.professor.setMaxDeEmprestimo(max_emprestimo)
        self.professor.setAutorizacao(autorizacao)
        self.professor.setEmprestimos(self.emprestimo)
        self.professor.setAtivo(True)

        self.listaDeProfessores = []
        self.arquivo = open("Professores.tab")
        self.listaDeProfessores = pickle.load(self.arquivo)
        self.arquivo.close()

        self.listaDeProfessores.append(self.professor)
        self.arquivo = open("Professores.tab", "w")
        pickle.dump(self.listaDeProfessores, self.arquivo)
        self.arquivo.close()
        tkMessageBox.showinfo('Mensagem do sistema', 'Cadastro realizado com sucesso.')

    def Cadastrar_Funcionario(self, nome, telefone, cpf, email, funcao, setor, max_emprestimo, autorizacao):

        self.emprestimo = []
        self.funcionario = funcionario()
        self.funcionario.setNome(nome)
        self.funcionario.setTelefone(telefone)
        self.funcionario.setCpf(cpf)
        self.funcionario.setEmail(email)
        self.funcionario.setFuncao(funcao)
        self.funcionario.setSetor(setor)
        self.funcionario.setMaxDeEmprestimo(max_emprestimo)
        self.funcionario.setAutorizacao(autorizacao)
        self.funcionario.setEmprestimos(self.emprestimo)
        self.funcionario.setAtivo(True)

        self.listaDeFuncionarios = []
        self.arquivo = open("Funcionarios.tab")
        self.listaDeFuncionarios = pickle.load(self.arquivo)
        self.arquivo.close()

        self.listaDeFuncionarios.append(self.funcionario)
        self.arquivo = open("Funcionarios.tab", "w")
        pickle.dump(self.listaDeFuncionarios, self.arquivo)
        self.arquivo.close()
        tkMessageBox.showinfo("Mensagem do sistema", "Cadastro realizado com sucesso.")

    def Cadastrar_Livro(self, titulo, sub_titulo, autor, conservacao, editora, tipo, num_edicao, codigo, materia_livro):

        self.livro = livro()
        self.livro.setTitulo(titulo)
        self.livro.setSub_titulo(sub_titulo)
        self.livro.setAutor(autor)
        self.livro.setConservacao(conservacao)
        self.livro.setEditora(editora)
        self.livro.setTipo(tipo)
        self.livro.setNum_edicao(num_edicao)
        self.livro.setCodigo(codigo)
        self.livro.setMateria_livro(materia_livro)
        self.livro.setEmprestado(False)
        self.livro.setData_entrega('')

        self.listaDeLivros = []
        self.arquivo = open("Livros.tab")
        self.listaDeLivros = pickle.load(self.arquivo)
        self.arquivo.close()

        self.listaDeLivros.append(self.livro)
        self.arquivo = open("Livros.tab", "w")
        pickle.dump(self.listaDeLivros, self.arquivo)
        self.arquivo.close()
        tkMessageBox.showinfo("Mensagem do sistema", "Cadastro realizado com sucesso.")
        

    def Consultar_Aluno(self):
        lista = []
        arquivo = open("Alunos.tab")
        lista = pickle.load(arquivo)
        arquivo.close()
        return lista


    def Verificar_Matricula(self, matricula, aluno):
        self.listaDeAlunos = []
        self.arquivo = open("Alunos.tab")
        self.listaDeAlunos = pickle.load(self.arquivo)
        self.arquivo.close()
        achou = False
        for a in self.listaDeAlunos:
            if a.getMatricula() == matricula:
                achou = True
                break
        if achou == True:
            tkMessageBox.showwarning('Mensagem do sistema', 'Ja existe registro com a matricula fornecida')
        else:
            self.listaDeAlunos.append(aluno)        
            self.arquivo = open('Alunos.tab', 'w')
            pickle.dump(self.listaDeAlunos, self.arquivo)
            self.arquivo.close()
            tkMessageBox.showinfo('Mensagem do sistema', 'Cadastro realizado com sucesso.')

    def Editar_Aluno(self, nome, serie, periodo, turno, email, email_pais, max_emprestimo, autorizacao, matricula):
        self.emprestimo = []
        self.aluno = aluno()
        self.aluno.setNome(nome)
        self.aluno.setSerie(serie)
        self.aluno.setPeriodo(periodo)
        self.aluno.setTurno(turno)
        self.aluno.setEmail(email)
        self.aluno.setEmailPais(email_pais)
        self.aluno.setMaxDeEmprestimo(max_emprestimo)
        self.aluno.setAutorizacao(autorizacao)
        self.aluno.setMatricula(matricula)
        self.aluno.setEmprestimos(self.emprestimo)
        self.aluno.setAtivo(True)
        chave = self.aluno.getMatricula()
        print chave
        listaDeAlunos = []
        listaDeAlunos = self.Consultar_Aluno()
        indice = 0
        for a in listaDeAlunos:
            print indice
            if a.getMatricula() == chave:
                listaDeAlunos[indice] = self.aluno
                arquivo = open('alunos.tab','wb')
                pickle.dump(listaDeAlunos, arquivo)
                #print 'aluno alterado'
                tkMessageBox.showinfo('Mensagem do sistema', 'Altercao realizada com sucesso.')                
                return
            indice = indice + 1
                
            


        
